# Python在3.5版本的时候引入了类型注解，以方便静态类型检查工具，IDE等第三方工具
# 类型注解：在代码中涉及数据交互的地方，提供数据类型的注解(显式的说明)
# 主要功能：
# 1，帮助第三方IDE工具(如PyCharm)对代码进行类型推断，协助做代码提示
# 2，帮助开发者自身对变量进行类型注释
# 类型注解仅仅是提示性的，不是决定性的，非强制限定，不遵守也可以正常运行
# 类型注解可用于变量，函数(方法)形参和返回值。类型注解是在代码中显式声明变量、函数(方法)形参和返回值的类型的方式
# 变量的类型注解直接在变量名后使用 : 类型 声明外，也可以在注释中进行类型注解。
# 函数(方法)形参只能用冒号的形式添加类型注解
# 函数(方法)的返回值的类型注解是在定义形参的括号后面，冒号的前面，写上一个横杠和一个向右的尖括号 -> 返回值类型
# 注意：
# 元组类型设置详细注解，需要将每一个元素都标记出来
# 字典类型设置类型详细注释，需要2个类型，第一个是key第二个是value
import random

# 对变量进行类型注解
var_1: int = 10
var_2: float = 3.1415926
var_3: bool = True
var_4: str = "itheima"
# Alt+回车键是一个功能强大的快捷键，它能够帮助用户快速定位并修复代码中的问题，被誉为“万能键”。可以自动搜索并导包(快速导包)是其中一项功能
var_5 = random.randint(1, 10)  # type: int
def func():
    return 10
var_6 = func()  # type:int
# 对形参进行类型注解
def add(x: int, y: int):
    return x + y
add(2,3)  # ctrl+p提示形参信息(形参和类型)
# 对返回值进行类型注解
def func(data: list) -> list:
    return data
func(1)
# Union联合类型是一种用于类型注解的工具，它表示一个变量或函数参数和返回值的类型可以是多种类型中的一种
from typing import Union, List
my_list: List[Union[int, str]] = [1, 2, "itheima", "itcast"]
def func(data: Union[int, str]) -> Union[int, str]:
    pass
func(1)
